home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-08 | 19.7 KB | 445 lines | [TEXT/R*ch] |
-
- MacTCP Monitor
- by Chris Johnson
- ©1994 The University of Texas System Office of Telecommunication Services
-
-
- Welcome to the early days of testing for MacTCP Monitor, and an experimental
- Simple Internet Version Control (SIVC - pronounced "civic") server.
-
- MacTCP Monitor is a simple (in concept, anyway) utility for displaying your
- Mac's TCP activity. It continuously graphs the number of bytes sent/received
- by MacTCP in any given second. This can be handy for keeping an eye on the
- activity of servers running in the background of your Mac, or for gauging
- at-a-glance the throughput of that TCP code you've been working on lately.
-
- MacTCP Monitor requires at least System 7, Apple's Thread Manager extension
- (which is built into System 7.5, BTW), Color QuickDraw, and, of course,
- MacTCP. :-) Note that some optional parts of MacTCP Monitor only work if
- Peter N. Lewis' "Anarchie" and "MacTCP Watcher" utilities are present on your
- machine.
-
- The TCP Data Transfer Graph window can be resized from any edge/corner (when
- the mouse is near enough to an edge/corner, the cursor will change
- accordingly to show you what's going on). The width of the label area on the
- left side of the window can be changed by dragging its dividing line. The
- window can be dragged from any point in the window that isn't an edge/corner
- or the aforementioned dividing line (the cursor will change to a hand shape).
-
- And, of course, be sure to check-out the dialogs accessible via the
- "Preferences" items in the File menu to see how you can customize MacTCP
- Monitor's behavior.
-
- If you have comments, bug reports, etc. send them to "chrisj@mail.utexas.edu".
-
-
-
-
-
- So What's That SIVC Thing You Mentioned?
- ----------------------------------------
-
- SIVC (a client of which is built into MacTCP Monitor) is a system for doing
- two things:
-
- 1. Determining the size of a product's user base on the Internet. This is
- really useful when you're trying to justify working on a product to
- yourself or your boss. Just waving your arms and asserting that there
- *must* be lots of people using your product because you've received
- a bunch of email messages about it isn't really very convincing. SIVC
- provides the developer with real numbers that are generally accurate
- and continuously updated.
-
- 2. In keeping with the idea that this exchange of information shouldn't
- benefit only the developer, a SIVC server returns to the client current
- version information for the product, including the exact location from
- which the current version(s) can be downloaded. This allows the
- application to notify its users when new versions are released, and
- even makes it easy for the application to download new versions of
- itself for the user.
-
- What about privacy? SIVC shouldn't represent a threat to most people's privacy.
- The only information the SIVC client in this program sends to the server is:
- (1) the name of this program, and (2) the version of this program. The server
- will also log the IP number from which this information was received. So, the
- server doesn't know your name, email address, etc. It just logs the fact that
- someone at IP number X is running version Y of this program. Hopefully this
- won't represent a problem for anyone.
-
- If you do feel that SIVC represents a threat to your privacy, you can disable
- all SIVC features in MacTCP Monitor from the "Internet Version Control"
- preferences dialog found in the "File" menu. Personally, I'd very much prefer
- that people leave SIVC *enabled*, however. Without it, I don't know if anyone
- is using the product.
-
- Note to developers: if you'd be interested in using SIVC in one of your
- products, let me know and I'll send you details. (There's no charge for
- the server, BTW, I'm just not quite ready to release it openly, yet.)
-
-
- Changes in 1.0d30
- -----------------
-
- * Updated SIVC code to embrace latest improvements in protocol.
-
- * Built app with latest versions of common code base (various minor tweaks
- and bug fixes).
-
- * Looked into making MacTCP Monitor work with Open Transport, but found
- that it's going to take some work, so OT compatibility isn't in this
- version.
-
-
- Changes in 1.0d29
- -----------------
-
- * Finally found the true source of the disabled Apple menu bug some people
- encountered. Thanks to Rick Watson for the use of his Mac while tracking
- down this problem. Turns out one subroutine was surprised by menus with
- more than 31 items in them, and bungled a test of the menu item states
- when that was the case. As a result, people (like me) with relatively
- uncrowded Apple menus didn't encounter this problem.
-
- * While working on another program built on the same code base, found a
- very obscure bug that could result in bogus values being passed as
- pointers or handles to DisposPtr or DisposHandle, respectively. MacTCP
- Monitor probably never exercised the afflicted piece of code in a way
- that could cause the mistake to occur, but it was an annoying bug
- elsewhere and I'm glad to be rid of it.
-
- * Told the tables in the URL handling code that Eudora 3.0 will provide
- support for "get URL" AppleEvents. Anyone out there who's testing it
- should find that the "mailto:" URL in 'Monitor's About box will use that
- new Eudora in preference to NewsWatcher, all things being equal (there
- are cases in which it will use NewsWatcher anyway, but, you don't want
- to know all the details).
-
- It has been suggested that the URL code should, whenever possible, consult
- Internet Config to determine the user's preferred client for any given
- type of URL. In the future, it will. I've written Internet Config-aware
- code before, so it should be straightforward. I'm just not gonna do it
- right now. :-)
-
-
- Changes in 1.0d28
- -----------------
-
- * Identified and fixed an old bug in the multithreaded application shell on
- which MacTCP Monitor is based. The bug could cause pointers in one routine
- to become invalid on occasion, which is certainly a bad thing. This fix
- could take care of several infrequently reported bugs which I haven't been
- able to reproduce in any of my own tests. It might even take care of the
- disabled Apple menu bug a number of people have reported, but which I also
- haven't been able to reproduce.
-
- * An enhancement to the multithreaded application shell enables/disables the
- Edit menu, and/or its underlying items, as appropriate while text is
- manipulated in dialog text edit fields. A possible problem with clipboard
- import/export in such situations should be history now, too.
-
-
- Changes in 1.0d27
- -----------------
-
- * Finally acted on a suggestion by Chuck Shotten to change the keyword
- delimiters in SIVC transactions from equal signs to colons. Making this
- change required significant alterations to the SIVC server, and minor
- changes to the client code in MacTCP Monitor. The changes to the SIVC
- server were significant enough that it wasn't possible (given the time
- constraints) to retain backward compatibility with the old SIVC code in
- past versions of MacTCP Monitor. As a result, I'll run both the old and
- new SIVC servers concurrently until the 'Monitor user base has more-or-
- less universally upgraded to 1.0d27, thus eliminating any apparent loss
- of service. As the two servers will be keeping separate user base totals,
- those figures will suffer during this process, but it's better to make
- the change-over now, rather than later.
-
- This change also effects the format of the MacTCP Monitor Prefs file (the
- same parsing code is used), but backward compatibility has been retained,
- so users shouldn't be aware that anything has changed in this respect.
-
- * Various minor improvements in the application shell on which 'Monitor is
- built.
-
-
- Changes in 1.0d26
- -----------------
-
- * Fixed a bug (probably introduced back in 1.0d24) which frequently prevented
- the SIVC code in MacTCP Monitor from notifying the user when the product
- went out of date. The queries were made correctly, but the responses
- could be lost after being received and parsed. Oops. This bug also resulted
- in clients making a number of unnecessary automatic queries to the SIVC
- server. (Automatic queries from versions of MacTCP Monitor prior to 1.0d26
- will no longer be counted in the User Base total, as a result.)
-
- Anyway, tell your friends to upgrade to 1.0d26; they may not find out about
- it otherwise. (Note that the "Current Version Info" item in the "Special"
- menu has always worked fine, so regardless of what version people currently
- have, they can still do the download of 1.0d26 that way.)
-
- * Fixed a bug which resulted in a bad value for the next automatic SIVC query
- time being recorded in the prefs file.
-
- * MacTCP Monitor now checks for the presense of Color QuickDraw while it loads.
- If it doesn't find it, the program *should* just quit now, instead of
- crashing. I don't have a machine around here without Color QuickDraw, so I
- can't test this, but the check is simple and should work as anticipated.
-
- * Various minor adjustments in the application shell. None of these
- adjustments should result in an apparent change of behavior in this product,
- but were necessary to make other products work properly.
-
-
- Changes in 1.0d25
- -----------------
-
- * Fixed a logic error which prevented the data transfer graph from being
- updated when the graph labels were entirely obscured; used an "and" where
- I should have used an "or". Nuts.
-
- * Replaced the "Current Version Info" dialog with the slightly redesigned one
- from the SIVC Client application which is currently in the works. The new
- dialog is slightly more compact, while displaying all the same information.
-
- * Fixed some anachronistic resource names. This had no effect on anything, it
- just made me feel better. :-)
-
-
- Changes in 1.0d24
- -----------------
-
- * Rewrote TCP Data Transfer Graph plotting code. Previous code was highly
- optimized for the case in which only a reasonable number of samples were
- being drawn at the right edge of an *unobscured* window. Judging from some
- of the email I've received, that was the wrong case for which to optimize.
-
- I had originally believed that the only alternatives I had were (a) an
- implementation which would tend to flicker when drawing new samples
- (blech!), or (b) an implementation using an off-screen pixmap which would
- use memory like it was going out of style (especially for large windows
- on deep monitors).
-
- Instead, a variation of the aforementioned option 'a' has been implemented,
- with a lot of work devoted to limiting flicker. From my own testing, it
- seems to work fine, with only a little additional flicker (which may or may
- not actually be noticeable) when processing update events. In exchange, it
- plots much faster than its predecessors, especially when the graph window
- is partially obscured.
-
- * When the graph window is resized, its new position is now recorded in
- the prefs file. In the past it appears that only the new window *size*
- was stored, resulting in the window reappearing in an unexpected place
- when the program was next launched.
-
- * Clicking on one of the graph's resize edges/corners without actually
- doing a resize no longer results in the window being redrawn and the
- window's position being rewritten to the prefs file.
-
- * DebugStr calls will now only be made on machines that actually have MacsBug
- installed. :-) This should eliminate some "unimplemented trap" crashes
- that one person reported. If you do have MacsBug, be prepared for the
- unlikely possibility that you might see one of my debugging messages some
- day. If you do, jot it down, type 'g' on your keyboard, and hit return. The
- application will go back to running as normally as it can under whatever
- weird circumstances it has encountered. If you see additional messages, just
- repeat the aforementioned steps. Finally, send me a message telling me about
- those messages and what was going on when they appeared. (Extreme low-memory
- conditions are a possible cause, BTW.)
-
- * Made further attempts to reproduce the bug that results in the Apple menu
- being disabled on 68K Macs. No luck so far. However, I have removed some
- redundant old code from the primary menu handling routine that just might
- have been able to cause such a problem. If you were experiencing this
- problem and find that it's fixed now, please let me know. By the same token,
- if it isn't fixed, please let me know.
-
-
- Changes in 1.0d23
- -----------------
-
- * Edit menu items are now enabled in any dialog that contains text edit
- fields. For simplicity at this stage, the items are enabled whether or
- not they happen to be useful at the time, e.g. the "Copy" item will be
- enabled even if there's no text selected at the time. I'll take care
- of such details later, after I rearrange the menu handling code.
-
- * Fixed a typo in the About box. I'm so embarassed. But, hey, if you
- didn't notice, I'm not gonna tell you what it was. :-)
-
-
- Changes in 1.0d22
- -----------------
-
- * Fixed a bug in the URL opening code which prevented it from correctly
- checking the versions of the applications to which it was considering
- sending "Get URL" AppleEvents. Due to bugs in versions of some apps
- which provide "Get URL" capabilities, this could cause crashes (none
- were reported, though).
-
-
- Changes in 1.0d21
- -----------------
-
- * Added alerts to notify users of basic failure conditions: Thread Manager
- not present, AppleEvents not present, and that kind of really basic stuff.
- In the past when these conditions were detected, the program would just
- beep three times and quit.
-
- * Added links to info about the product and me to the About dialog. Since
- I'd already added the "mailto:" link to my email address in a previous
- version, these additions just seemed to make sense. Had to considerably
- beef up my URL opening code in the process.
-
- * Replaced previous U.T. logo in the About dialog with a considerably
- cleaner version.
-
- * I had hoped to do some basic restructuring in a few areas, but things have
- been busy lately and haven't, as a result, allowed much time for serious
- work on this product. Hopefully things will improve in a couple of weeks.
-
-
- Changes in 1.0d20
- -----------------
-
- * Corrected an error in the TCP Data Transfer Graph drawing logic which
- resulted in at least one pixel of "writing" being plotted in the graph
- during any second in which data was transferred, even if all the data
- was actually being read at that time.
-
- * Made the TCP Connection States window appear open by default. (It used to
- be closed by default.)
-
-
- Changes in 1.0d19
- -----------------
-
- * Acting on an old suggestion from Peter Lewis, made my email address in the
- About box into a "mailto" URL link. Just click on it (it's blue and
- underlined just as it would appear in most WWW clients) and it'll fire-up
- NewsWatcher and create a blank email message addressed to me. In order for
- this feature to work, you must have a current version of John Norstad's
- NewsWatcher application (like 2.0b24).
-
- * Revised my simple-minded URL-opening code to be slightly less simple-minded.
- It now knows about "ftp", "mailto", "news", "http", and "gopher" URLs. (It
- used to only deal with "ftp" URLs.)
-
-
- Changes in 1.0d18
- -----------------
-
- * Changed TCP data transfer statistics gathering code to separately store
- information on bytes read and written. (These totals used to be added
- together and stored in a single field.)
-
- * Changed TCP data transfer graph to draw separate read and write bars, one
- stacked on top of the other. (The write bar is always on top.)
-
- * Changed TCP data transfer graph preferences dialog to allow you to set the
- colors of the aforementioned read and write bars. By default, the read and
- write bars are set to dull shades of green and red, respectively.
-
- * Changed some Preferences menu items and preference window titles to
- be a little more specific about their purposes.
-
- * Changed the "Contacting User Counter Server..." dialog to read "Contacting
- SIVC Server...". The "User Counter" name has been a misnomer for a while.
-
-
- Changes in 1.0d17
- -----------------
-
- * Added a "Connection State Cells" preferences dialog, and modified the
- Connection States window to make use of the values set therein.
-
- * When copying the Connection States window to the Clipboard, the image is
- now framed. I think it looks better this way.
-
- * If the prefs. file was open in another application with read/write access
- and MacTCP Monitor was launched, it would startup, revert to its default
- configuration, and attempt to close the unopened MacTCP resolver when the
- user quit the program. This has been fixed. Now 'Monitor just beeps three
- times and exits in this situation, which shouldn't arise in normal usage.
-
-
- Changes in 1.0d16
- -----------------
-
- * Made the "New" item in the "File" menu hierarchical, and placed items in that
- hierarchical menu for opening all the major features of MacTCP Monitor -
- the data transfer graph, and the connection states window. The "Connection
- States" item has been removed from the "Special" menu as a result.
-
- * Added a "Connection State Colors" item to the preferences menu. The dialog
- behind that item allows you to set separate colors for each and every
- TCP connection state, as well as for the read and write indicators. Patterns
- to go along with each color may also be designated, which is likely to
- be useful on machines with limited color palettes.
-
- * Corrected (in all probability) a bug that would occasionally prevent the
- last active connection in the connection state window from being redrawn
- in the closed state when it was closed.
-
- * Fixed a bug in the launch-by-signature code that prevented MacTCP Monitor
- from launching MacTCP Watcher and Anarchie if they were stored on anything
- other than the startup volume.
-
-
- Changes in 1.0d15
- -----------------
-
- * Based on a suggestion from Peter N. Lewis, added a window for monitoring
- the state of all 64 of the connections MacTCP will support at any given
- time. Connection states are color-coded as follows:
-
- + Gray -- Connection is closed. (Closed.)
- + Blue (50%) -- Listening for, or establishing, a connection. (Listen,
- SYNReceived, and SYNSent.)
- + Blue (solid) -- Connection open. (Established.)
- + Cyan -- Connection closing (FINWait1, FINWait2, CloseWait,
- Closing, and LastAck.)
- + Yellow -- Breaking connection. (TimeWait.)
-
- In addition, green and/or red color bars may be overlaid to indicate that
- data is being read and/or written, respectively, on the connection.
-
- At present, you open this window by choosing the "Connection States" item
- in the "Special" menu. I'll probably move it somewhere else in a future
- version.
-
- In the future, I'll add a preferences dialog that'll let you pick the colors
- used for all these states, set the cell size in the window, etc.
-
- * Fixed a bug in the Thread Message Manager's time distribution routine. The
- bug shouldn't have effected previous versions, but became a problem when
- the connection state window was added.
-
- * Moved the "Windows" menu to the end of the menu bar. This seems like a
- better place for it.
-
- * Probably did some other stuff, too, but still haven't worked on Rick
- Watson's useful suggestions.
-
-
- Changes in 1.0d14
- -----------------
-
- * Incorporated John Nortsad's correction to the definition of the TCPSendPB
- parameter block in the MacTCP.h header from Apple's version 2.0a3 of the
- Universal Headers. (The "filler" field was in the wrong place in Apple's
- version.)
-
- * Retouched the U.T. System seal in the about box in order to make it look
- the same in the 256, Thousands and Millions color modes. Previous versions
- looked fine in the Thousands and Millions modes, but not in the 256 color
- mode. (Hey, I always use Millions. :-)
-
-
- Changes in 1.0d13
- -----------------
-
- * Fixed problem with radio buttons in 68K version.
-
-
-